有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用Jackson从POJO数组生成JSON模式

我想使用Jackson 2.7.0从POJO数组生成JSON模式:

JsonSchema schema = mapper.generateJsonSchema(MyClass[].class);

所以我希望得到JSON模式:

{
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "id": {
        "type": "string"
      },
      "text": {
        "type": "string"
      }
  ...

但是你可以得到:

{
      "type": "array"
}

如何获得预期模式
有没有更好的库可以从POJO生成模式
提前感谢您的帮助


共 (2) 个答案

  1. # 1 楼答案

    //Using below code you can custom json schema
    public static String getJsonSchema(Class clazz) throws IOException {
             Field[] fields = clazz.getDeclaredFields();
    
             List<Map<String,String>> map=new ArrayList<Map<String,String>>();
             for (Field field : fields) {
                 HashMap<String, String> objMap=new  HashMap<String, String>();
                 objMap.put("name", field.getName());
                 objMap.put("type", field.getType().getSimpleName());
                 objMap.put("format", "");
                 map.add(objMap);
             }
             ObjectMapper mapper = new ObjectMapper();
             String json = mapper.writeValueAsString(map);
    
           return json;
        }
    
  2. # 2 楼答案

    自从版本2.2
    如果使用gradle或maven,请使用^{}作为依赖项

    compile "com.fasterxml.jackson.module:jackson-module-jsonSchema:2.9.0
    

    然后你可以这样创建你的模式:

    ObjectMapper mapper = new ObjectMapper();
    
    JsonSchemaGenerator schemaGen = new JsonSchemaGenerator(mapper);
    JsonSchema schema = schemaGen.generateSchema(MyClass[].class);
    
    String schemaText = mapper.writeValueAsString(schema);
    

    这对你有用